#include<stdio.h>
#include<stdlib.h>
#include<string.h>

struct STU
{
	int marks;
	char name[21];
};

int down(const void *a,const void *b);
int main(void)
{
	int N,M,G,n=0,get,get_one,sum;
	scanf("%d%d%d",&N,&M,&G);
	int score[M];
	struct STU stu[N];
	for(int i=0;i<M;i++)
	{
		scanf("%d",&score[i]);
	}
	for(int i=0;i<N;i++)
	{
		scanf("%s%d",stu[i].name,&get);
		sum=0;
		for(int i=0;i<get;i++)
		{
			scanf("%d",&get_one);
			sum+=score[get_one-1];
		}
		stu[i].marks=sum;
	}
	qsort(stu,N,sizeof(struct STU),down);
	for(int i=0;i<N;i++)
	{
		if(stu[i].marks>=G)
		{
			n++;
		}
	}
	printf("%d\n",n);
	for(int i=0;i<n;i++)
	{
		printf("%s %d\n",stu[i].name,stu[i].marks);
	}
	
	return 0;
}
int down(const void *a,const void *b)
{
	struct STU s1=*(struct STU *)a;
	struct STU s2=*(struct STU *)b;
	if(s1.marks!=s2.marks)
	{
		return s2.marks-s1.marks;
	}
	else
	{
		return strcmp(s1.name,s2.name);
	}
}
